package edu.zut.dao;

import edu.zut.pojo.UserInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;
import java.util.Map;

/**
 * 数据层的映射接口
 * mybatis : 1、接口+mapper.xml
 *           2、接口 + 注解
 */
@Mapper
public interface UserInfoMapper {

    List<UserInfo> queryInfos();

    UserInfo queryById(Integer id);

    List<UserInfo> queryInfoByEmailAndPsw(@Param("mail") String email, @Param("psw") String password);

    List<UserInfo> queryByInfo(UserInfo userInfo);

    List<UserInfo> queryByMap(Map<String,Object> map);

    /*如果返回值是map，key就是查询的字段名   value就是数据*/
    Map<String,Object> queryInofById2(Integer id);

    int saveInfo(UserInfo userInfo);

    int updateInfo(UserInfo userInfo);

    int deleteById(Integer id);

    //利用注解简写sql
    @Select("select * from user_info where fullName like concat ('%',#{name},'%')")
    List<UserInfo> queryLikeName(String name);


    List<UserInfo> queryByCondition(UserInfo userInfo);


    int updateConditionById(UserInfo userInfo);


    List<UserInfo> queryByIds(List<Integer> ids);

    /*查询用户信息以及用户购买的商品信息*/
    UserInfo queryUserAndItemsByUId(Integer id);

    /*根据用户的邮箱查询用户信息以及用户的订单信息*/
    UserInfo queryUserInfoAndOrders(String email);

}
